/*============================================================================*/
/*                   CONTINENTAL AUTOMOTIVE SYSTEMS                           */
/*============================================================================*/
/*                        OBJECT SPECIFICATION                                */
/*============================================================================*
* name:            MALPWM.c
* version:         1.0
* created_by:      Continental
* date_created:    Ago 11 2011
*=============================================================================*/
/* DESCRIPTION : Source file for uC Abstraction layer for PWM                 */
/*============================================================================*/
/* FUNCTION COMMENT : Describes the functions for uC Abstraction Layer for PWM*/
/*                                                                            */
/*============================================================================*/
/*                               OBJECT HISTORY                               */
/*============================================================================*/
/*  REVISION |   DATE      |                               |      AUTHOR      */
/*----------------------------------------------------------------------------*/
/*  1.0      | 11/ago/2011 |                               | Continental      */
/* Initial version for the Smart Car Race 2010 contest using Freescale        */
/* Bolero micro.                                                              */
/*============================================================================*/

#include "stdtypedef.h"
#include "sysinit.h"
#include "MALbeMIOS.h"
#include "MALioapi.h"
#include "MALPWM.h"


void InitPWM(void);

void InitPWM(void)
{
	MALbeMIOS_initEMIOS0();
//  INICIALISA EL CHANNEL CORRESPONDIENTE
	MALbeMIOS_initEMIOS0_ch0();
	MALbeMIOS_initEMIOS0_ch1();
	MALbeMIOS_initEMIOS0_ch2();
	MALbeMIOS_initEMIOS0_ch23();
//	CONFIGURA LOS PINES COMO SALIDA DEL EMIOS PARA EL PWM	
	IO_SetPinFctn(pin_PE7,PA_AM1);	
	IO_SetPinM1left(pin_PA0,PA_AM1);
	IO_SetPinM1right(pin_PA1,PA_AM1);
	IO_SetPinServo(pin_PA2,PA_AM1);
}
//  NO BORRAR ESTE COMENTARIO
/*void SetDutyCycle(T_UWORD luw_DC)
{
	if(luw_DC>1000)
	{
		luw_DC=1000;
	}
	EMIOS_0.CH[23].CADR.R=(luw_DC+1000);
	
}*/
void SetDutyCycle(T_UWORD luw_DC)
{
//	if(luw_DC>1000)
//	{
//		luw_DC=1000;
//	}
	EMIOS_0.CH[23].CADR.R=(luw_DC+1000);	
}
void pwm_LeftMotor(T_UWORD M1)
{
	
	EMIOS_0.CH[0].CADR.R=M1+1000;
	
}

void pwm_rightMotor(T_UWORD M2)
{
	
	EMIOS_0.CH[1].CADR.R=M2+1000;
}

void pwm_servo_Motor(T_UWORD SERVO)
{
	
	EMIOS_0.CH[2].CADR.R=SERVO+500;
}
